// SequentialSearch.cpp
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

// 泛型编程
// 某种类型的索引 -> 某种类型的值
// 符号表/字典中的一条记录
// typename 它用于告诉 C++ 接下来 Key 和 Value 都是某种类型
// Record - 符号表中的一条记录，每一个条记录需要两个泛型类型，通用类型
// Key 索引的类型
// Value 和索引对应的值的类型
// table["PI"] = 3.14
// Record<string, double> pi;
template <typename Key, typename Value>
class Record { // 1. 创建类型的名字
public:
  // 2. 写一个类型的所有属性
  Key key;
  Value value;

  // 当我们创建一个类型的时候，也是有三板斧子的
  // 3. 为类型写一个构造函数
  // 构造函数永远和类型同名
  // 
  Record(Key k, Value v) : key{k}, value{v} {
    cout<<"Record 创建了"<<endl;
  }
};

int main(int argc, char const *argv[]) {
  /* code */
  
  Record<string, double> rec {"PI", 3.14};
  cout<<rec.key<<endl;
  cout<<rec.value<<endl;

  Record<double, string> rec1 {3.14, "PI"};
  return 0;
}
